/**
 * mixins的中文意思是混入，就是在类中混入其他功能
 * 在Dart中可以使用mixins实现类似多继承的功能
 * 
 * 因为mixins使用的提哦阿建，随着Dart版本一直在变，这里讲的是Dart2.x中使用的mixins的条件：
 *  1.作为mixins的类智能集成自Object,不能继承其他类
 *  2.作为mixins的类不能有构造函数
 *  3.一个类可以mixins多个mixins类
 *  4.mixins绝不是继承，也不是接口，而是一种全新的特性
 */
class Person {
  String name;
  num age;
  Person(this.name, this.age);
  void printInfo() {
    print("${this.name}----${this.age}");
  }
}

class A {
  // String name;
  String info = "this is A";
  printA() {
    print("printA");
  }

  void run() {
    print("A run");
  }
}

class B {
  printB() {
    print("printB");
  }

  void run() {
    print("B run");
  }
}

class C extends Person with A, B {
  C(String name, num age) : super(name, age);
}

void main(List<String> args) {
  C c = new C('Andrew', 20);
  // c.printA();
  // c.printB();
  // print(c.info);
  c.printInfo();
  c.run();

  print(c is C);
  print(c is A);
  print(c is B);
}
